// // 1. 回文是指正读反读均相同的字符序列，如“abba”和“abdba”均是回文，但“good”不是回文。
// // 试写一个算法判断给定字符序列是否是回文。（提示：将一般字符入栈。）
// #include <stdio.h>
// #include <stdlib.h>
// #include "windows.h"
// #include <string.h>
// #include <stdbool.h>
// #define MAX_SIZE 100  // 定义栈的最大容量
// typedef char ElemType;
// // 栈结构体
// typedef struct {
//     int base[MAX_SIZE]; // 使用数组作为顺序栈的存储结构
//     int top;            // 栈顶指针，指向栈顶元素的位置
// } Stack;
//
// // 初始化栈
// void initStack(Stack* s) {
//     s->top = -1; // 初始化栈顶指针为 -1，表示栈为空
// }
//
// // 输出栈中的元素
// void printStack(const Stack* s) {
//     if (s->top == -1) {
//         printf("栈为空！\n");
//         return;
//     }
//     printf("栈中的元素: ");
//     for (int i = 0; i <= s->top; i++) {
//         printf("%d ", s->base[i]);
//     }
//     printf("\n");
// }
//
// // 判断栈是否为空
// int stackEmpty(const Stack* s) {
//     return s->top == -1;
// }
//
// // 判断栈是否已满
// int stackFull(const Stack* s) {
//     return s->top == MAX_SIZE - 1;
// }
//
// // 进栈操作
// int push(Stack* s, ElemType e) {
//     if (stackFull(s)) {
//         printf("栈已满，无法进栈！\n");
//         return 0; // 栈满，进栈失败
//     }
//     s->base[++s->top] = e; // 栈顶指针后移并将元素 e 压入栈顶
//     return 1; // 进栈成功
// }
//
// // 出栈操作
// int pop(Stack* s, ElemType* e) {
//     if (stackEmpty(s)) {
//         printf("栈为空，无法出栈！\n");
//         return 0; // 栈空，出栈失败
//     }
//     *e = s->base[s->top--]; // 将栈顶元素赋值给 e，并将栈顶指针前移
//     return 1; // 出栈成功
// }
//
// // 获取栈顶元素
// int getTop(const Stack* s, ElemType* e) {
//     if (stackEmpty(s)) {
//         printf("栈为空！\n");
//         return 0; // 栈空，无法获取栈顶元素
//     }
//     *e = s->base[s->top]; // 将栈顶元素赋值给 e
//     return 1; // 获取栈顶元素成功
// }
//
// boolean IsHuiWen(char* t) {
//     Stack s;
//     initStack(&s);
//
//     for(int i=0;i<strlen(t)/2;i++) {
//         push(&s,t[i]);
//     }
//     int start=strlen(t)%2==0?strlen(t)/2:strlen(t)/2+1;
//     for(int i=start;i<strlen(t);i++) {
//         char ToChar;
//         if(!pop(&s,&ToChar) || t[i]!=ToChar) {
//             return false;
//         }
//     }
//     return true;
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     if(IsHuiWen("abcba")==true){
//         printf("是回文\n");
//     }else {
//         printf("不是回文\n");
//     }
//     return 0;
// }
// // 【算法思想】
// // 将字符串前一半入栈，然后，栈中元素和字符串后一半比较。
// // 即将第一个出栈元素和后一半串中第一个字符比较，若相等，
// // 则再出栈一个元素与后一个字符比较，依次类推，直至栈空，
// // 在这种情况下可判断该字符序列是回文。
// // 如果出栈元素与串中的字符进行比较时出现不等的情况，则可判断该字符序列不是回文。